// math_operations.cppm - 模块接口文件
module;

// 这里可以包含传统的头文件（全局模块片段）
#include <iostream>
#include <string>

export module math_operations;

// 导出函数声明
export namespace MathOps {
    // 基本数学运算
    int add(int a, int b);
    int subtract(int a, int b);
    int multiply(int a, int b);
    double divide(double a, double b);
    
    // 导出类
    class Calculator {
    private:
        std::string name;
        
    public:
        Calculator(const std::string& calc_name);
        
        int add(int a, int b);
        int subtract(int a, int b);
        void print_result(const std::string& operation, int result);
        std::string get_name() const;
    };
    
    // 导出常量
    constexpr double PI = 3.14159265359;
    
    // 导出模板函数
    template<typename T>
    T max_value(T a, T b) {
        return (a > b) ? a : b;
    }
}

// 内部函数（不导出）
namespace {
    void internal_log(const std::string& message);
}
